package com.hongyi.demo.pojo.TestList;

import java.util.ArrayList;
import java.util.HashSet;

/**
 * @author hongyi
 * @date 2024/10/8 20:31
 */
public class Test01 {
    public static void main(String[] args) {
        // 定义两个数组
        int arr[] = {1, 2, 3, 4};
        int arr1[] = {1, 2, 3, 5, 4, 7, 9, 10};

        // 找出在两个集合都有元素的集合（交集）
        ArrayList<Integer> intersection = new ArrayList<>();
        HashSet<Integer> set1 = new HashSet<>();

        // 将第一个数组的元素添加到HashSet中，以提高查找效率
        for (int num : arr) {
            set1.add(num);
        }

        // 遍历第二个数组，找出与第一个数组相同的元素
        for (int num : arr1) {
            if (set1.contains(num)) {
                intersection.add(num);
            }
        }

        System.out.println("找出在两个集合都有元素的集合（交集）:");
        for (Integer item : intersection) {
            System.out.print(item + " ");
        }
        System.out.println();

        // 找出在两个集合中都不存在的集合（差集）
        ArrayList<Integer> difference = new ArrayList<>();

        // 将第二个数组的元素添加到HashSet中
        HashSet<Integer> set2 = new HashSet<>();
        for (int num : arr1) {
            set2.add(num);
        }

        // 检查第一个数组中的元素是否存在于第二个数组中
        for (int num : arr) {
            if (!set2.contains(num)) {
                difference.add(num);
            }
        }

        // 检查第二个数组中的元素是否存在于第一个数组中
        for (int num : arr1) {
            if (!set1.contains(num)) {
                difference.add(num);
            }
        }

        System.out.println("找出在两个集合中都不存在的集合（差集）:");
        for (Integer item : difference) {
            System.out.print(item + " ");
        }
        System.out.println();
    }
}
